package algorithm_primary.studyClass.新手课程;

import algorithm_primary.Entity;

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

/**
 * @author 衡孟浩
 * @date 2023/5/28 9:35
 */
public class TreeMapTest {
    public static void main(String[] args) {

        /**
         * TreeMap是一个有序的数组     就是按照下边的添加顺序   第一个位置因为第一次添加的是 key=2 value=1   所以在第一个位置就是 key=2的
         */
        TreeMap<Integer, Integer> map = new TreeMap<>();
        map.put(2, 1);
        map.put(5, 2);
        map.put(4, 3);
        map.put(8, 3);
        Integer getOne = map.get(1);
        // 获取第一个key
        Integer firstKey = map.firstKey();
        // 获取最后一个key
        Integer lastKey = map.lastKey();
        // 获取最接近3的   >=3   比如上边的数值     4是最接近3的所以就会把key为4的显示出来   如果key中有3那么就会显示3
        Integer ceilingKey = map.ceilingKey(3);
        // 获取最接近3的   <=3   比如上边的数值     2是最接近3的所以就会把key为2的显示出来   如果key中有2那么就会显示2
        Integer floorKey = map.floorKey(3);
        System.out.println(getOne);
        System.out.println(firstKey);
        System.out.println(ceilingKey);
        System.out.println(floorKey);
        System.out.println(map);




        //TreeMap<Entity, Entity> mapOBJ = new TreeMap<>();
        //Entity entity = new Entity();
        //entity.setAge(1);
        /**
         * Exception in thread "main" java.lang.ClassCastException: algorithm_primary.Entity cannot be cast to java.lang.Comparable
         * 	at java.util.TreeMap.compare(TreeMap.java:1294)
         * 	at java.util.TreeMap.put(TreeMap.java:538)
         *
         *
         * 	因为 在 TreeMap中如果时使用的自己定义的类   那么就必须告诉treeMap他的比较方式是什么要不然就会报错
         */
        //mapOBJ.put(new Entity(),entity);
        //mapOBJ.firstKey();
    }
}
